package kgame5.k3d.util3d{
//import kgame5.k3d.core.*;
//import kgame5.kutil.*;
 
public class RouteTween3D{ 
//	//_______________Propety____________________
//	
//	private var a2Route:Array;
//	private var CellSize:Number;//每个方格的大小
//	
//	private var md:Model=null;
//	private var Speed:Number;
//	private var v3d_speed:Vector3D;
//	
//	private var aimNodeIdx:Number=0;//目标节点的索引
//	private var NodeCount:Number=0;//节点的总数量，这个是用来判断是否都头了
//	private var v3d_aim:Vector3D;
//	
//	//是否到达目标，到达了就返回true;
//	private var bReached:Boolean=false;
//	//_______________Method_______________
//	public function RouteTween3D(){
//		v3d_aim=new Vector3D();
//		v3d_speed=new Vector3D();
//	}
//	//返回的是是否需要移动，如果位置没改变则不需要移动
//	//这个是为了当没有移动的时候就不让人做移动的动作了
//	public function init(p_a2Route:Array,p_CellSize:Number,p_md:Model,p_Speed:Number):Boolean{
//		a2Route=p_a2Route;
//		CellSize=p_CellSize;
//		NodeCount=a2Route.length;
//		
//		md=p_md;
//		Speed=p_Speed;
//		
//		//var curCol:Number=Math.floor(md.v3d_p.x/CellSize);
//		//var curRow:Number=Math.floor(-md.v3d_p.z/CellSize);
//		//
//		aimNodeIdx=0;
//		var cellCol:Number=a2Route[aimNodeIdx][0];
//		var cellRow:Number=a2Route[aimNodeIdx][1];
//		v3d_aim.fill(cellCol*CellSize+CellSize/2,0,-(cellRow*CellSize+CellSize/2));
//		
//		MathDG.CalcLaneSpeed3D(md.v3d_p,v3d_aim,v3d_speed,Speed);
//		
//		bReached=false;
//		
//		var bMove:Boolean=false;//返回用的，表示是否移动了位置，没移动位置为false,移动了就是true
//		if(a2Route.length==1){//只有一个位置表示是没有改变位置
//			bMove=false;//没移动
//			T.p("没移动");
//			bReached=true;
//		}else{
//			var dir:Number=MathDG.CalcDir(md.v3d_p.x,md.v3d_p.z,v3d_aim.x,v3d_aim.z);
//			md.ChangeDir(dir);
//			
//			bMove=true;//改变了位置
//		}
//		
//		return bMove;
//	}
//	public function update():Boolean{
//		if(bReached){
//			return true;
//		}
//		
//		if(md.v3d_p.isNear(v3d_aim,Speed/2+1)){//到达目标
//			
//		
//			aimNodeIdx++;
//			if(aimNodeIdx>=NodeCount){
//				bReached=true;//标志已经到达了
//				//T.p("目标到达");
//				return true;
//			}else{
//				
//				
//				
//				md.v3d_p.fill(
//					v3d_aim.x,
//					v3d_aim.y,
//					v3d_aim.z
//				);
//				
//				var cellCol:Number=a2Route[aimNodeIdx][0];
//				var cellRow:Number=a2Route[aimNodeIdx][1];
//				v3d_aim.fill(cellCol*CellSize+CellSize/2,0,-(cellRow*CellSize+CellSize/2));
//				
//				MathDG.CalcLaneSpeed3D(md.v3d_p,v3d_aim,v3d_speed,Speed);
//				
//				var dir:Number=MathDG.CalcDir(md.v3d_p.x,md.v3d_p.z,v3d_aim.x,v3d_aim.z);
//				md.ChangeDir(dir);
//			}
//		}
//		
//		md.v3d_p.add(v3d_speed);
//		return false;
//	}
}//end of class
}
/*
////////////////////////////////////////////
////////寻径并移动/////////
//////////////////////////////////////////////////////
MOVE5_SPEED = 12;
var route:Array = null;
//route=new byte[][];
var routeFlag = 0;
var next_x = 0, next_y = 0;
var positionNum = 0;
function InitMove5 (Bar:Array, me_col:Number, me_row:Number, aim_col:Number, aim_row:Number, searchRange:Number) {
	
	//找到路径并存储在route[][]里
	if (aim_col == me_col && aim_row == me_row) {
		//如果我没动地方
		route = _root.NewArray2 (1, 2);
		//  new byte[1][2];
		positionNum = 1;
		route[0][0] = me_col;
		route[0][1] = me_row;
	} else {
		//如果我动了地方
		route = _root.FindPath (Bar, me_col, me_row, aim_col, aim_row, searchRange);
		//最大搜索半径是8
		
		_root.Mediator_NotifyPlayerMove(ID,model._x_,model._y_);
	}
	routeFlag = 0;
	
	
	next_x = _root.bg.CPosi (route[routeFlag][0]);
	next_y = _root.bg.CPosi (route[routeFlag][1]);
	routeFlag++;
	positionNum = route.length;
}
//根据路径信息移动人物的函数，由pathFlag表示当前在第几个格子的位置并起到控制只走一遍的作用
//返回类型表示是否完成了此动作
function Move5 () {
	if (model._x_ == next_x && model._y_ == next_y) {
		//在稳定位置
		if (routeFlag == positionNum) {
			//保证路只走一遍，
			return true;
		} else {
			_root.Mediator_NotifyPlayerMove(ID,model._x_,model._y_);
			//设置下一个目标点
			next_x = _root.bg.CPosi (route[routeFlag][0]);
			next_y = _root.bg.CPosi (route[routeFlag][1]);
			
			routeFlag++;
		}
	}
	if (model._y_ > next_y) {
		model._y_ -= MOVE5_SPEED;
		if (model._y_ < next_y) {
			model._y_ = next_y;
		}
		//model._dir = Model.DIR_UP; 
	} else if (model._y_ < next_y) {
		model._y_ += MOVE5_SPEED;
		if (model._y_ > next_y) {
			model._y_ = next_y;
		}
		//mc._dir = Model.DIR_DOWN; 
	} else if (model._x_ > next_x) {
		model._x_ -= MOVE5_SPEED;
		if (model._x_ < next_x) {
			model._x_ = next_x;
		}
		//mc._dir = Model.DIR_LEFT; 
	} else if (model._x_ < next_x) {
		model._x_ += MOVE5_SPEED;
		if (model._x_ > next_x) {
			model._x_ = next_x;
		}
		//mc._dir = Model.DIR_RIGHT; 
	}
	//不在稳定位置返回flase,表示还要继续走 
	return false;
}
////////////////////////////////////////////
//*/